package br.ucb.webresource;

import java.io.Serializable;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import org.apache.catalina.tribes.util.Arrays;

import br.ucb.bean.Aluno;
import br.ucb.bean.Mensagem;
import br.ucb.bean.MensagemShort;
import br.ucb.controller.MensagemController;
import br.ucb.dao.AlunoDAO;
import br.ucb.util.SimpleEntityManager;

import com.google.gson.Gson;

@Path("/mensagem")
public class MensagemResource implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@POST
	@Path("/getMensagens")
	@Produces("application/json")
	@Consumes("application/json")
	public List<Mensagem> getMensagens( Aluno aluno){
		Aluno temp = new AlunoDAO(new SimpleEntityManager("sacop").getEntityManager()).buscar("codigo", aluno.getCodigo());
		return removeCrossReference(temp.getMensagens());
	}
	
	@POST
	@Path("/getMensagensGSON")
	@Produces("application/json")
	@Consumes("application/json")
	public String getMensagensGSON( Aluno aluno){
		Aluno temp = new AlunoDAO(new SimpleEntityManager("sacop").getEntityManager()).buscar("codigo", aluno.getCodigo());
		return new Gson().toJson(removeCrossReference(temp.getMensagens()));
	}
	
	@POST
	@Path("/getMensagemShort")
	@Produces("application/json")
	@Consumes("application/json")
	public MensagemShort getArquivoById(Mensagem msg) {
		MensagemShort msgShort = new MensagemShort();
		System.out.println(msg);
		msgShort.setArquivo(Arrays.toString(new MensagemController().getById(msg.getCodigo()).getArquivo()));
		System.out.println("ARQUIVO LENGHT " + msgShort.getArquivo().length());
		return msgShort;
	}
	
	@POST
	@Path("/getMensagemShortGSON")
	@Produces("application/json")
	@Consumes("application/json")
	public String getArquivoByIdGSON(Mensagem msg){
		MensagemShort msgShort = new MensagemShort();
		System.out.println(msg);
		msgShort.setArquivo(Arrays.toString(new MensagemController().getById(msg.getCodigo()).getArquivo())); 
		return new Gson().toJson(msgShort);
	}

	private List<Mensagem> removeCrossReference(List<Mensagem> mensagens) {
		for (Mensagem mensagem : mensagens) {
			mensagem.setAlunos(null);
			mensagem.setData(null);
			mensagem.setArquivo(null);
		}
		return mensagens;
	}

}
